#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
完整功能演示脚本 - 展示TIF文件和可视化区域功能
"""

import json
import sys
from pathlib import Path
from database import template_dao, region_dao, project_dao

def test_tif_template_creation():
    """测试TIF文件底板创建"""
    print("🖼️ 测试TIF底板创建...")
    
    # 检查XL.tif文件
    tif_file = Path("XL.tif")
    if not tif_file.exists():
        print("❌ XL.tif文件不存在")
        return None
    
    try:
        from PIL import Image
        
        # 读取TIF文件信息
        with Image.open(tif_file) as img:
            width, height = img.size
            mode = img.mode
            format_info = img.format
        
        print(f"✅ TIF文件信息:")
        print(f"   文件路径: {tif_file.absolute()}")
        print(f"   尺寸: {width} x {height}")
        print(f"   模式: {mode}")
        print(f"   格式: {format_info}")
        
        # 使用本地路径创建底板
        template_id = template_dao.create_template(
            name="XL_TIF底板",
            width=width,
            height=height,
            description="从XL.tif文件创建的底板，使用本地路径引用",
            image_path=str(tif_file.absolute()),
            original_filename=tif_file.name
        )
        
        print(f"✅ 底板创建成功，ID: {template_id}")
        return template_id
        
    except Exception as e:
        print(f"❌ TIF文件处理失败: {e}")
        return None

def create_demo_regions(template_id):
    """为底板创建演示区域"""
    print(f"\n📐 为底板{template_id}创建演示区域...")
    
    try:
        # 获取底板信息
        template = template_dao.get_template_by_id(template_id)
        if not template:
            print("❌ 底板不存在")
            return []
        
        width = template['width']
        height = template['height']
        
        # 创建几个示例区域
        regions = [
            {
                'name': '左上角区域',
                'x': int(width * 0.1),
                'y': int(height * 0.1),
                'width': int(width * 0.3),
                'height': int(height * 0.2)
            },
            {
                'name': '右下角区域',
                'x': int(width * 0.6),
                'y': int(height * 0.7),
                'width': int(width * 0.3),
                'height': int(height * 0.2)
            },
            {
                'name': '中心区域',
                'x': int(width * 0.4),
                'y': int(height * 0.4),
                'width': int(width * 0.2),
                'height': int(height * 0.2)
            }
        ]
        
        region_ids = []
        for region_data in regions:
            region_id = region_dao.create_region(
                template_id=template_id,
                name=region_data['name'],
                x=region_data['x'],
                y=region_data['y'],
                width=region_data['width'],
                height=region_data['height']
            )
            region_ids.append(region_id)
            print(f"✅ 创建区域: {region_data['name']} (ID: {region_id})")
        
        return region_ids
        
    except Exception as e:
        print(f"❌ 创建区域失败: {e}")
        return []

def test_json_customization(template_id):
    """测试JSON定制功能"""
    print(f"\n🎨 测试JSON定制功能...")
    
    # 读取示例JSON文件
    json_file = Path("定制json文件.json")
    if not json_file.exists():
        print("❌ JSON文件不存在")
        return None
    
    try:
        with open(json_file, 'r', encoding='utf-8') as f:
            json_data = json.load(f)
        
        # 获取底板和区域信息
        template = template_dao.get_template_by_id(template_id)
        regions = region_dao.get_regions_by_template(template_id)
        
        # 准备定制数据
        customization_data = {
            'regions': {}
        }
        
        # 使用JSON中的regions数据
        if 'surfaces' in json_data and json_data['surfaces']:
            json_regions = json_data['surfaces'][0].get('regions', [])
            
            for i, json_region in enumerate(json_regions):
                if i < len(regions):
                    customization_data['regions'][str(i)] = json_region
        
        # 生成定制图片
        from image_processor import ImageProcessor
        processor = ImageProcessor()
        
        result_path = processor.create_customized_image(
            template=dict(template),
            regions=[dict(region) for region in regions],
            customization_data=customization_data
        )
        
        print(f"✅ 定制图片生成成功: {result_path}")
        return result_path
        
    except Exception as e:
        print(f"❌ JSON定制失败: {e}")
        return None

def show_usage_guide():
    """显示使用指南"""
    print("\n" + "="*70)
    print("🎉 完整功能演示完成！")
    print("="*70)
    print("🆕 新增功能:")
    print("   🖼️  TIF图片完整内容展示 - 显示真实的图片内容")
    print("   🖱️  可视化区域框选 - 鼠标拖拽选择定制区域")
    print("   📝 智能区域命名 - 自动生成或手动输入区域名称")
    print("   📁 本地路径支持 - 无需上传大文件，直接引用")
    print()
    print("🎯 使用流程:")
    print("   1. 访问: http://localhost:5000")
    print("   2. 侧边栏 → 底板管理 → 创建底板")
    print("   3. 选择'本地路径'选项卡")
    print("   4. 输入XL.tif的完整路径")
    print("   5. 查看底板详情 → 看到完整TIF图片内容")
    print("   6. 点击'框选区域' → 在图片上拖拽选择区域")
    print("   7. 为区域命名 → 保存区域配置")
    print("   8. 侧边栏 → 图片定制 → 开始定制")
    print()
    print("💡 关键改进:")
    print("   ✅ TIF图片内容完整显示（不只是尺寸）")
    print("   ✅ 可视化拖拽框选区域")
    print("   ✅ 实时区域预览和编辑")
    print("   ✅ 支持任意大小的TIF文件")
    print("   ✅ 企业化界面设计")
    print("="*70)

def main():
    """主演示函数"""
    print("🎨 图片定制工具 - 完整功能演示")
    print("="*70)
    
    try:
        # 1. 测试TIF底板创建
        template_id = test_tif_template_creation()
        
        if template_id:
            # 2. 创建演示区域
            region_ids = create_demo_regions(template_id)
            
            # 3. 测试JSON定制
            if region_ids:
                result_path = test_json_customization(template_id)
        
        # 4. 显示使用指南
        show_usage_guide()
        
        return True
        
    except Exception as e:
        print(f"❌ 演示过程中出现错误: {e}")
        return False

if __name__ == '__main__':
    success = main()
    sys.exit(0 if success else 1)
